package com.sc.sc250601.cook.util;

import io.jsonwebtoken.*;

import java.util.Date;
import java.util.UUID;

public class JwtUtils {
    private static long time = 1000 * 60 * 60 * 24;//表示有效期为24h
    private static String signature;//定义签名

    public static String createToken(String username) {//创建token的方法
        signature = username;
        //JwtBuilder用来构建jwt
        JwtBuilder jwtBuilder = Jwts.builder();
        String jwtToken = jwtBuilder
            //header
                .setHeaderParam("typ", "JWT")
                .setHeaderParam("alg", "HS256")
            //payload
                .claim("username", username)
                //.claim("role","user")
                //.setSubject("admin-test")
                .setExpiration(new Date(System.currentTimeMillis() + time))//设置过期时间
                .setId(UUID.randomUUID().toString())//signature
                .signWith(SignatureAlgorithm.HS256, signature)
                .compact();//把三部分拼接起来
        return jwtToken;
    }

    //校验token的方法,其实就是解析token，如果解析成功就是可以放行
    public static boolean checkToken(String token) {
        if (token == null) {
            return false;
        }
        try {
            Jws<Claims> claimsJws =
                    //验证签名和 过期时间
                    Jwts.parser().setSigningKey(signature).parseClaimsJws(token);
        } catch (Exception e) {
            //表示token过期 或者签名无效
            return false;
        }
        return true;
    }
}
